'\" t
.\"     Title: cset-set
.\"    Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
.\"      Date: 06/09/2011
.\"    Manual: [FIXME: manual]
.\"    Source: [FIXME: source]
.\"  Language: English
.\"
.TH "CSET\-SET" "1" "06/09/2011" "[FIXME: source]" "[FIXME: manual]"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
cset-set \- manage sets of cpus
.SH "SYNOPSIS"
.sp
.nf
\fIcset\fR [cset options] \fIset\fR [set options] [args]
\fIcset\fR set \-\-help
\fIcset\fR set
\fIcset\fR set \-\-recurse
\fIcset\fR set \-\-list myset
\fIcset\fR set myset
\fIcset\fR set \-\-recurse \-\-list myset
\fIcset\fR set \-\-cpu 2\-5 \-\-mem 0 \-\-set newset
\fIcset\fR set \-\-cpu 2\-5 newset
\fIcset\fR set \-\-cpu 1,2,5\-7 another_set
\fIcset\fR set \-\-destroy newset
\fIcset\fR set \-\-destroy /mygroup_sets/my_set
.fi
.SH "OPTIONS"
.PP
\-h, \-\-help
.RS 4
prints the list of options for this command
.RE
.PP
\-l, \-\-list
.RS 4
list the named cpuset(s); if \-a is used, will list members of named cpuset; if \-r is used, will list recursively
.RE
.PP
\-c CPUSPEC, \-\-cpu=CPUSPEC
.RS 4
create or modify cpuset in the specified cpuset with CPUSPEC specification
.RE
.PP
\-m MEMSPEC, \-\-mem=MEMSPEC
.RS 4
specify which memory nodes to assign to the created or modified cpuset
.RE
.PP
\-d, \-\-destroy
.RS 4
destroy specified cpuset
.RE
.PP
\-s CPUSET, \-\-set=CPUSET
.RS 4
specify cpuset name to be acted on
.RE
.PP
\-r, \-\-recurse
.RS 4
do recursive listing, for use with \-\-list
.RE
.PP
\-v, \-\-verbose
.RS 4
prints more detailed output, for the set command, using this flag will not chop listing to fit in 80 columns
.RE
.PP
\-\-cpu_exclusive
.RS 4
mark this cpuset as owning its CPUs exclusively
.RE
.PP
\-\-mem_exclusive
.RS 4
mark this cpuset as owning its MEMs exclusively
.RE
.SH "DESCRIPTION"
This command is used to create, modify, and destroy cpusets\&. Cpusets form a tree\-like structure rooted at the root cpuset which always includes all system CPUs and all system memory nodes\&.

A cpuset is an organizational unit that defines a group of CPUs and a group of memory nodes where a process or thread (i\&.e\&. task) is allowed to run on\&. For non\-NUMA machines, the memory node is always 0 (zero) and cannot be set to anything else\&. For NUMA machines, the memory node can be set to a similar specification as the CPU definition and will tie those memory nodes to that cpuset\&. You will usually want the memory nodes that belong to the CPUs defined to be in the same cpuset\&.

A cpuset can have exclusive right to the CPUs defined in it\&. This means that only this cpuset can own these CPUs\&. Similarly, a cpuset can have exclusive right to the memory nodes defined in it\&. This means that only this cpuset can own these memory nodes\&.

Cpusets can be specified by name or by path; however, care should be taken when specifying by name if the name is not unique\&. This tool will generally not let you do destructive things to non\-unique cpuset names\&.

Cpusets are uniquely specified by path\&. The path starts at where the cpusets filesystem is mounted so you generally do not have to know where that is\&. For example, so specify a cpuset that is called "two" which is a subset of "one" which in turn is a subset of the root cpuset, use the path "/one/two" regardless of where the cpusets filesystem is mounted\&.

When specifying CPUs, a so\-called CPUSPEC is used\&. The CPUSPEC will accept a comma\-separated list of CPUs and inclusive range specifications\&. For example, \-\-cpu=1,3,5\-7 will assign CPU1, CPU3, CPU5, CPU6, and CPU7 to the specified cpuset\&.

Note that cpusets follow certain rules\&. For example, children can only include CPUs that the parents already have\&. If you do not follow those rules, the kernel cpuset subsystem will not let you create that cpuset\&. For example, if you create a cpuset that contains CPU3, and then attempt to create a child of that cpuset with a CPU other than 3, you will get an error, and the cpuset will not be active\&. The error is somewhat cryptic in that it is usually a "Permission denied" error\&.

Memory nodes are specified with a MEMSPEC in a similar way to the CPUSPEC\&. For example, \-\-mem=1,3\-6 will assign MEM1, MEM3, MEM4, MEM5, and MEM6 to the specified cpuset\&.

Note that if you attempt to create or modify a cpuset with a memory node specification that is not valid, you may get a cryptic error message, "No space left on device", and the modification will not be allowed\&.

When you destroy a cpuset, then the tasks running in that set are moved to the parent of that cpuset\&. If this is not what you want, then manually move those tasks to the cpuset of your choice with the \fIcset proc\fR command (see \fIcset proc \-\-help\fR for more information)\&.
.SS "EXAMPLES"
.PP
Create a cpuset with the default memory specification
.RS 4
\fB# cset set \-\-cpu=2,4,6\-8 \-\-set=new_set\fR
.RE
This command creates a cpuset called "new_set" located off the root cpuset which holds CPUS 2,4,6,7,8 and node 0 (interleaved) memory\&. Note that \-\-set is optional, and you can just specify the name for the new cpuset after all arguments\&.
.PP
Create a cpuset that specifies both CPUs and memory nodes
.RS 4
\fB# cset set \-\-cpu=3 \-\-mem=3 /rad/set_one\fR
.RE
Note that this command uses the full path method to specify the name of the new cpuset "/rad/set_one"\&. It also names the new cpuset implicitly (i\&.e\&. no \-\-set option, although you can use that if you want to)\&. If the "set_one" name is unique, you can subsequently refer to is just by that\&. Memory node 3 is assigned to this cpuset as well as CPU 3\&.

The above commands will create the new cpusets, or if they already exist, they will modify them to the new specifications\&.
.SH "LICENSE"
Cpuset is licensed under the GNU GPL V2 only\&.
.SH "COPYRIGHT"
Copyright (c) 2008\-2011 Novell Inc\&.
.SH "AUTHOR"
Written by Alex Tsariounov <alext@novell\&.com>\&.
.SH "SEE ALSO"
cset(1), cset\-proc(1), cset\-shield(1)

/usr/share/doc/packages/cpuset/html/tutorial\&.html

taskset(1), chrt(1)

/usr/src/linux/Documentation/cpusets\&.txt

